/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controlador;

import Bean.Usuario;
import Modelo.DAO_Usuario;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author kriss
 */
@WebServlet(name = "ServletLogin", urlPatterns = {"/ServletLogin"})
public class ServletLogin extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
       DAO_Usuario dao = new DAO_Usuario();
        String accion = request.getParameter("accion") != null ? request.getParameter("accion") : "";
        HttpSession sesion = request.getSession(true);//intenta obtener la sesion activa sino exite crea una nueva pero no hay ningun problema porque el parametro que usamos para limitar el acceso es un Bean de tipo Usuario
        String redireccion = "/Contenido/Login.jsp";
        String mensaje = "Favor de identificarse";

        if (accion.equalsIgnoreCase("iniciarsesion")) {
            Usuario login = dao.getLogin(request.getParameter("usuario"), request.getParameter("contrasena"));
            if (login != null) {
                sesion.setAttribute("login", login);//nuestro bean lo guardamos en la sesion
                redireccion = "/Contenido/menuAdmin.jsp";//redireccion cuando el usuario y contraseña es correcto y se permite el acceso
                mensaje = null;
            } else {
                redireccion = "/Contenido/Login.jsp";
                mensaje = "Usuario y/o Contraseña incorrectos";
            }
        } else if (accion.equalsIgnoreCase("cerrarsesion")) {
            sesion.invalidate();//cierra la sesion
            redireccion = "/index.jsp";
            mensaje = null;
        }else if (sesion.getAttribute("login") != null) {//es diferente de null cuando se inicio sesion anteriormente
            redireccion = "/Contenido/menuAdmin.jsp";//siempre debe ser igual a la redireccion de IniciarSesion cuando es exitosa
            mensaje = null;
        }

        if (mensaje != null) {
            request.setAttribute("mensaje", mensaje);
        }

        RequestDispatcher rd = getServletContext().getRequestDispatcher(redireccion);
        rd.forward(request, response);
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
